package com.mlog.njyjy.ndop.share.zabbix.request.get;

import com.mlog.njyjy.ndop.share.zabbix.request.auth.AbstractZabbixAuthenticatedRequestBuilder;

import java.util.List;

/**
 * <p>
 * .
 * </p>
 *
 * @author <a href="mailto:yingxiufeng@mlogcn.com">alex</a>
 * @version v1.0, 2020/7/21
 */
public abstract class AbstractZabbixGetRequestBuilder<T extends AbstractZabbixGetRequest, M> extends AbstractZabbixAuthenticatedRequestBuilder<T, M> {

    protected Boolean countOutput;

    protected Boolean editable;

    protected Boolean excludeSearch;

    protected Integer limit;

    protected List<String> output;

    protected Boolean preservekeys;

    protected Boolean searchByAny;

    protected Boolean searchWildcardsEnabled;

    protected Boolean startSearch;

    public M countOutput(Boolean countOutput) {
        this.countOutput = countOutput;
        return (M) this;
    }

    public M editable(Boolean editable) {
        this.editable = editable;
        return (M) this;
    }

    public M excludeSearch(Boolean excludeSearch) {
        this.excludeSearch = excludeSearch;
        return (M) this;
    }

    public M limit(Integer limit) {
        this.limit = limit;
        return (M) this;
    }

    public M output(List<String> output) {
        this.output = output;
        return (M) this;
    }

    public M preservekeys(Boolean preservekeys) {
        this.preservekeys = preservekeys;
        return (M) this;
    }

    public M searchByAny(Boolean searchByAny) {
        this.searchByAny = searchByAny;
        return (M) this;
    }

    public M searchWildcardsEnabled(Boolean searchWildcardsEnabled) {
        this.searchWildcardsEnabled = searchWildcardsEnabled;
        return (M) this;
    }

    public M startSearch(Boolean startSearch) {
        this.startSearch = startSearch;
        return (M) this;
    }
}
